package com.ruoyi.training.mapper;

import java.util.List;
import com.ruoyi.training.domain.PracticeCheckIn;
import com.ruoyi.training.dto.BatchCheckStatusDto;
import com.ruoyi.training.dto.CheckInQueryDto;
import com.ruoyi.training.vo.CheckInVO;
import org.apache.ibatis.annotations.Param;

/**
 * 实践预约签到Mapper接口
 * 
 * @author WorrilessGo
 * @date 2025-10-14
 */
public interface PracticeCheckInMapper 
{
    /**
     * 查询实践预约签到
     * 
     * @param practiceCheckId 实践预约签到主键
     * @return 实践预约签到
     */
    public PracticeCheckIn selectPracticeCheckInByPracticeCheckId(String practiceCheckId);

    /**
     * 查询实践预约签到列表
     * 
     * @param practiceCheckIn 实践预约签到
     * @return 实践预约签到集合
     */
    public List<PracticeCheckIn> selectPracticeCheckInList(PracticeCheckIn practiceCheckIn);

    /**
     * 新增实践预约签到
     * 
     * @param practiceCheckIn 实践预约签到
     * @return 结果
     */
    public int insertPracticeCheckIn(PracticeCheckIn practiceCheckIn);

    /**
     * 修改实践预约签到
     * 
     * @param practiceCheckIn 实践预约签到
     * @return 结果
     */
    public int updatePracticeCheckIn(PracticeCheckIn practiceCheckIn);

    /**
     * 删除实践预约签到
     * 
     * @param practiceCheckId 实践预约签到主键
     * @return 结果
     */
    public int deletePracticeCheckInByPracticeCheckId(String practiceCheckId);

    /**
     * 批量删除实践预约签到
     * 
     * @param practiceCheckIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePracticeCheckInByPracticeCheckIds(String[] practiceCheckIds);

    /**
     * 通过条件搜索查询实践预约签到列表
     */
    public List<CheckInVO> searchCheckIn(CheckInQueryDto checkInQueryDto);

    /**
     * 批量修改签到状态
     * lqx
     */
    public int batchUpdateStatus(BatchCheckStatusDto batchCheckStatusDto);

    //查签到记录
    public PracticeCheckIn selectByPracticeClassStudent(@Param("classId") String classId,
                                                        @Param("practiceId") String practiceId,
                                                        @Param("studentId") String studentId,
                                                        @Param("projectId") String projectId);
}
